package com.nuanshui.heatedloan.baseservice.dal.mapper;


import com.nuanshui.heatedloan.dal.module.IndexMenu;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;

import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;



public interface IndexMenuMapper {

   /**
    * 获取系统菜单
    * @return
    */
   List<IndexMenu> findSystemIndexMenus();
   /**
    * 根据token获取自定义的菜单
    * @param pageable
    * @param safeToken
    * @return
    * @since 1.7.0
    */
   List<IndexMenu> findCustomIndexMenus(@Param("pager") Pageable pageable, @Param("safeToken") String safeToken);
   /**
    * 根据用户获取用户的自定义菜单
    * @param pageable
    * @param userId
    * @return
    * @since 1.6.0
    * @deprecated 1.7.0
    */
   @Deprecated
List<IndexMenu> findCustomIndexMenusByUser(@Param("pager") Pageable pageable, @Param("userId") String userId);
   /**
    * 根据用户获取选中的菜单
    * @param userId
    * @return
    * @since 1.6.0
    * @deprecated 1.7.0 改为token作为标识
    */
   @Deprecated
List<IndexMenu> findSelectMenus(@Param("userId") String userId);
   /**
    * 删除用户选择的菜单
    * @param userId
    * @since 1.6.0
    * @deprecated 1.7.0 改为token作为标识
    */
   @Deprecated
void deleteSelectMenu(@Param("userId") String userId);
   /**
    * 批量 删除用户选择的菜单
    * @param ids
    * @since 1.6.0
    * @deprecated 1.7.0 改为token
    */
   @Deprecated
void deleteSelectMenuByIds(@Param("ids") LinkedHashSet<String> ids);
   /**
    * 保存用户选择的菜单
    * @param menuIds
    * @param userId
    * @since 1.6.0
    * @deprecated 1.7.0改为token
    */
   @Deprecated
void saveSelectMenu(@Param("menuIds") Set<String> menuIds, @Param("userId") String userId);
   /**
    * 获取用户选择的图片
    * @param userId
    * @return
    */
   List<String> findSelectIndexMenuIds(@Param("userId") String userId);
   /**
    * 获取系统标签的id id为混淆
    * @return
    * @since 1.6.0
    */
   List<String> findSystemMenuIds();
   
   /**
    * 根据id获取
    * @param id
    * @return
    */
   IndexMenu get(@Param("id") String id);
   /**
    * 保存选择的菜单以token作为标识
    * @param menuIds
    * @param safeToken
    * @since 1.7.0
    */
   void saveTokenMenu(@Param("menuIds") Collection<String> menuIds, @Param("safeToken") String safeToken);
   /**
    * 根据id删除一个菜单
    * @param id
    * @since 1.7.0
    */
   void deleteTokenMenu(@Param("id") String id);
   /**
    * 批量删除
    * @param ids
    * @since 1.7.0
    */
   void deleteBatchTokenMenu(@Param("ids") Collection<String> ids);
   /**
    * 根据token获取menuId
    * @param safeToken
    * @return
    * @since 1.7.0
    */
   List<String> findMenuIdsByToken(@Param("safeToken") String safeToken);
   /**
    * 获取选择的menu 以token作为标识
    * @param safeToken
    * @return
    * @since 1.7.0
    */
   List<IndexMenu> findTokenMenus(@Param("safeToken") String safeToken);
   
   /**
    * 新版获取menu
    * @author Junyan2015
    * @date 2016年3月7日 下午3:34:07
    * @since 2.5.0
    */
   List<IndexMenu> findTokenMenusWithNew(@Param("safeToken") String safeToken, @Param("moduleId") Integer moduleId);
   /**
    * 获取用户删除的菜单
    * @param safeToken
    * @return
    * @since 1.7.0
    */
   List<String> findDelMenuIdsByToken(@Param("safeToken") String safeToken);
   /**
    * 删除选择的menu
    * @param safeToken
    * @since 1.7.0
    */
   void deleteSelectMenuByToken(@Param("safeToken") String safeToken);
   /**
    * 保存要删除过的menu
    * @param delIds
    * @param safeToken
    * @since 1.7.0
    */
   void saveDelMenu(@Param("delIds") Collection<String> delIds, @Param("safeToken") String safeToken);
   /**
    * 批量删除删除过的menu
    * @param deleteDelIds
    * @since 1.7.0
    */
   void deleteBatchDelMenu(@Param("deleteDelIds") Collection<String> deleteDelIds);
   /**
    * 单个删除删除过的menu
    * @param safeToken
    * @since 1.7.0
    */
   void deleteDelMenuByToken(@Param("safeToken") String safeToken);
   /**
    * 获取可以自定义的菜单
    * @return
    */
   List<Long> findCustomMenuIds();
   
 
}


